﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CNLTHD_GoogleMapAPI_DTO;
using System.Data.OleDb;
namespace CNLTHD_GoogleMapAPI_DAO
{
	public class LoaiDiaDiemDAO
	{
		public static List<LoaiDiaDiem> LayDaySachLoaiDiaDiem()
		{
			OleDbConnection ketNoi = ConnectingClass.KetNoi();

			if (ketNoi == null)
			{
				return null;
			}

			string truyVan = @"SELECT l.MaLoaiDiaDiem, l.TenLoaiDiaDiem
								FROM LOAI_DIA_DIEM l";
								

			OleDbCommand cmd = new OleDbCommand(truyVan, ketNoi);

			List<LoaiDiaDiem> danhSach = new List<LoaiDiaDiem>();
			try
			{
				OleDbDataReader reader = cmd.ExecuteReader();

				while (reader.Read())
				{
					int maLoaiDiaDiem = reader.GetInt32(0);
					string tenLoaiDiaDiem = !reader.IsDBNull(1) ? reader.GetString(1) : "Chưa có tên";


					LoaiDiaDiem ldd = new LoaiDiaDiem { TenLoaiDiaDiem = tenLoaiDiaDiem, MaLoaiDiaDiem = maLoaiDiaDiem };


					danhSach.Add(ldd);
				}
			}
			catch (System.Exception ex)
			{
				throw new Exception("Lấy danh sách địa điểm bị lỗi");
				ketNoi.Close();
				return null;
			}
			finally
			{
			}

			ketNoi.Close();
			return danhSach;
		}

		public static LoaiDiaDiem LayLoaiDiaDiem(int loaiDiaDiem)
		{
			OleDbConnection ketNoi = ConnectingClass.KetNoi();

			if (ketNoi == null)
			{
				return null;
			}

			string truyVan = @"SELECT l.MaLoaiDiaDiem, l.TenLoaiDiaDiem
								FROM LOAI_DIA_DIEM l
								WHERE l.MaLoaiDiaDiem = @MaLoaiDiaDiem";

			OleDbParameter thamSoMaLoaiDiaDiem = new OleDbParameter("@MaLoaiDiaDiem", loaiDiaDiem);
			OleDbCommand cmd = new OleDbCommand(truyVan, ketNoi);
			cmd.Parameters.Add(thamSoMaLoaiDiaDiem);

			LoaiDiaDiem ldd = null;
			try
			{
				OleDbDataReader reader = cmd.ExecuteReader();

				while (reader.Read())
				{
					int maLoaiDiaDiem = reader.GetInt32(0);
					string tenLoaiDiaDiem = !reader.IsDBNull(1) ? reader.GetString(1) : "Chưa có tên";

					ldd = new LoaiDiaDiem { TenLoaiDiaDiem = tenLoaiDiaDiem, MaLoaiDiaDiem = maLoaiDiaDiem };
				}
			}
			catch (System.Exception ex)
			{
				throw new Exception("Lấy danh sách mã loại địa điểm bị lỗi");
				ketNoi.Close();
				return null;
			}
			finally
			{
			}

			ketNoi.Close();
			return ldd;
		}

		/// <summary>
		/// Lấy tên loại địa điểm
		/// </summary>
		/// <param name="tenDiaDiem">Tên địa điểm</param>
		/// <returns>Kết quả trả về là danh sách loại địa điem</returns>
		public static LoaiDiaDiem LayLoaiDiaDiem(string tenLoaiDiaDiem)
		{
			if (!KiemTraDoiTuongHopLe.KiemTraTenDiaDiem(tenLoaiDiaDiem))
			{
				throw new Exception("tenDiaDiem sai nguyên tắc");
				return null;
			}
			OleDbConnection ketNoi = ConnectingClass.KetNoi();

			if (ketNoi == null)
			{
				return null;
			}

			string truyVan = @"SELECT l.MaLoaiDiaDiem, l.TenLoaiDiaDiem
								FROM LOAI_DIA_DIEM l
								WHERE l.tenLoaiDiaDiem = @TenLoaiDiaDiem";

			OleDbParameter thamSoTenLoaiDiaDiem = new OleDbParameter("@TenLoaiDiaDiem", tenLoaiDiaDiem);
			OleDbCommand cmd = new OleDbCommand(truyVan, ketNoi);
			cmd.Parameters.Add(thamSoTenLoaiDiaDiem);

			LoaiDiaDiem ldd = null;
			try
			{
				OleDbDataReader reader = cmd.ExecuteReader();

				while (reader.Read())
				{
					int maLoaiDiaDiem = reader.GetInt32(0);
					tenLoaiDiaDiem = !reader.IsDBNull(1) ? reader.GetString(1) : "Chưa có tên";

					ldd = new LoaiDiaDiem { TenLoaiDiaDiem = tenLoaiDiaDiem, MaLoaiDiaDiem = maLoaiDiaDiem };
				}
			}
			catch (System.Exception ex)
			{
				throw new Exception("Lấy danh sách mã loại địa điểm bị lỗi");
				ketNoi.Close();
				return null;
			}
			finally
			{
			}

			ketNoi.Close();
			return ldd;
		}

	

		public static bool ThemLoaiDiaDiem(string tenDiaDiem)
		{
			if (!KiemTraDoiTuongHopLe.KiemTraTenDiaDiem(tenDiaDiem))
			{
				throw new Exception("Dữ liệu nhập vào không đúng, không thể thêm địa điểm");
				return false;
			}

			OleDbConnection ketNoi = ConnectingClass.KetNoi();

			if (ketNoi == null)
			{
				return false;
			}

			string truyVan = @"INSERT INTO LOAI_DIA_DIEM(TenLoaiDiaDiem)
								VALUES(@TenLoaiDiaDiem)" ;

			OleDbParameter thamSoTenDiaDiem = new OleDbParameter("@TenLoaiDiaDiem", tenDiaDiem);

			OleDbCommand cmd = new OleDbCommand(truyVan, ketNoi);

			cmd.Parameters.Add(thamSoTenDiaDiem);

			try
			{
				int result = cmd.ExecuteNonQuery();

				if (result >= 1)
				{
					return true;
				}
				else
				{
					return false;
				}
			}
			catch (System.Exception ex)
			{
				throw new Exception("Thêm đia điểm bị lỗi");
				ketNoi.Close();
				return false;
			}
			finally
			{
			}

			ketNoi.Close();

			return true;
// 			throw new Exception("Chưa code hàm ThemLoaiDiaDiem");
// 			return true;
		}


	}
}
